'''
DNA序列 由一系列核苷酸组成，缩写为 'A', 'C', 'G' 和 'T'.。

例如，"ACGAATTCCG" 是一个 DNA序列 。
在研究 DNA 时，识别 DNA 中的重复序列非常有用。

给定一个表示 DNA序列 的字符串 s ，返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 任意顺序 返回答案。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/repeated-dna-sequences
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
'''
import collections
class Solution(object):
    def findRepeatedDnaSequences(self, s):
        """
        :type s: str
        :rtype: List[str]
        """
        if len(s) < 10:
            return []
        count = collections.defaultdict(int)
        res = []
        l, r = 0, 10
        while r <= len(s):
            count[s[l:r]] += 1
            if count[s[l:r]] == 2:
                res.append(s[l:r])
            l, r = l + 1, r + 1
        return res
s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
Solution().findRepeatedDnaSequences(s)